import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    UserInfo: {}
  },
  mutations: {
    // 更改数据的同步方法
    ChangeUserInfo (state, update) {
      state.UserInfo = update
    },
    localUserInfo (state) {
      // 数据提交本地
      localStorage.setItem('UserInfoList', JSON.stringify(state.UserInfo))
    },
    ChangeTitle (state, title) {
      // 修改数据title
      state.UserInfo.title = title
    },
    Edit (state, date) {
      // 添加数据,date[0]是类型,date[1]是数据
      state.UserInfo[date[0]].push(date[1])
    },
    Del (state, date) {
      // 删除 
      state.UserInfo[date[0]] = date[1]
    }
  },
  actions: {
    // 更改数据的异步方法,一版用于调用mutations里的方法
    CUserInfo (context) {
      // 让数据同步本地存储
      if (!Boolean(localStorage.getItem('UserInfoList')) || localStorage.getItem('UserInfoList') == '[object Object]') {
        // 若一开始本地存储没有UserInfoList 则存储一个
        console.log('没有本地存储,重新创建');
        localStorage.setItem('UserInfoList', JSON.stringify({
          title: false,
          music: [],
          singer: [],
          musicList: [],
          album: [],
          MV: []
        }))
      }
      context.commit('ChangeUserInfo', JSON.parse(localStorage.getItem('UserInfoList')))
    },
    DEL (context, date) {
      // 删除,date[0]是类型,date[1]是id
      let fil = context.state.UserInfo[date[0]].filter((val, ind) => val.id !== date[1])
      context.commit('Del', [date[0], fil])
      context.commit('localUserInfo')
    },
    CTitle (context, title) {
      // 修改标题
      context.commit('ChangeTitle', title)
      context.commit('localUserInfo')
      // 数据提交本地
    },
    Change (context, date) {
      // 添加数据,date[0]是类型,date[1]是数据
      context.commit('Edit', date)
      context.commit('localUserInfo')
    },
  },
  getters: {
    // vuex的计算属性

  },
  modules: {}
})